package it.mercatino.hibernate;

import it.mercatino.composite.ElementoCatalogo;
import it.mercatino.composite.SinglePartException;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * Articolo entity. @author MyEclipse Persistence Tools
 */

public class Articolo implements java.io.Serializable, ElementoCatalogo {

	// Fields

	private Integer idArticolo;
	private Categoria categoria;
	private Utente utente;
	private String nome;
	private String descrizione;
	private String foto;
	private Float prezzo;
	private Date data;
	private Integer quantitaDisponibile;
	private Integer statoArticolo;
	private Set composizioneOrdines = new HashSet(0);

	// Constructors

	/** default constructor */
	public Articolo() {
	}

	/** minimal constructor */
	public Articolo(Categoria categoria, Utente utente, String nome,
			String descrizione, String foto, Float prezzo, Date data,
			Integer quantitaDisponibile, Integer statoArticolo) {
		this.categoria = categoria;
		this.utente = utente;
		this.nome = nome;
		this.descrizione = descrizione;
		this.foto = foto;
		this.prezzo = prezzo;
		this.data = data;
		this.quantitaDisponibile = quantitaDisponibile;
		this.statoArticolo = statoArticolo;
	}

	/** full constructor */
	public Articolo(Categoria categoria, Utente utente, String nome,
			String descrizione, String foto, Float prezzo, Date data,
			Integer quantitaDisponibile, Integer statoArticolo,
			Set composizioneOrdines) {
		this.categoria = categoria;
		this.utente = utente;
		this.nome = nome;
		this.descrizione = descrizione;
		this.foto = foto;
		this.prezzo = prezzo;
		this.data = data;
		this.quantitaDisponibile = quantitaDisponibile;
		this.statoArticolo = statoArticolo;
		this.composizioneOrdines = composizioneOrdines;
	}

	// Property accessors

	public Integer getIdArticolo() {
		return this.idArticolo;
	}

	public void setIdArticolo(Integer idArticolo) {
		this.idArticolo = idArticolo;
	}

	public Categoria getCategoria() {
		return this.categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public Utente getUtente() {
		return this.utente;
	}

	public void setUtente(Utente utente) {
		this.utente = utente;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescrizione() {
		return this.descrizione;
	}

	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}

	public String getFoto() {
		return this.foto;
	}

	public void setFoto(String foto) {
		this.foto = foto;
	}

	public Float getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(Float prezzo) {
		this.prezzo = prezzo;
	}

	public Date getData() {
		return this.data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public Integer getQuantitaDisponibile() {
		return this.quantitaDisponibile;
	}

	public void setQuantitaDisponibile(Integer quantitaDisponibile) {
		this.quantitaDisponibile = quantitaDisponibile;
	}

	public Integer getStatoArticolo() {
		return this.statoArticolo;
	}

	public void setStatoArticolo(Integer statoArticolo) {
		this.statoArticolo = statoArticolo;
	}

	public Set getComposizioneOrdines() {
		return this.composizioneOrdines;
	}

	public void setComposizioneOrdines(Set composizioneOrdines) {
		this.composizioneOrdines = composizioneOrdines;
	}
	
	@Override
	public void add(ElementoCatalogo e) throws SinglePartException {
		throw new SinglePartException();
	}

	@Override
	public void remove(ElementoCatalogo e) throws SinglePartException {
		throw new SinglePartException();
	}

	@Override
	public ElementoCatalogo getChild(int i) throws SinglePartException {
		throw new SinglePartException();
	}

	@Override
	public ElementoCatalogo getFather() {
		return getCategoria();
	}

	@Override
	public int getNumeroElementi() {
		return 1;
	}

	@Override
	public void setFather(ElementoCatalogo father) {
		setCategoria((Categoria) father);
	}

	@Override
	public boolean isComposite() {
		return false;
	}

}